home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / dev / lang / Python16_Src.lha / Python16_Source / Include / bitset.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-09-10  |  911 b   |  36 lines

  1. #ifndef Py_BITSET_H
  2. #define Py_BITSET_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6.  
  7. /* Bitset interface */
  8.  
  9. #ifdef _AMIGA
  10. #include <exec/types.h>
  11. #else /* !_AMIGA */
  12. #define BYTE        char
  13. #endif
  14.  
  15. typedef BYTE *bitset;
  16.  
  17. bitset newbitset Py_PROTO((int nbits));
  18. void delbitset Py_PROTO((bitset bs));
  19. #define testbit(ss, ibit) (((ss)[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0)
  20. int addbit Py_PROTO((bitset bs, int ibit)); /* Returns 0 if already set */
  21. int samebitset Py_PROTO((bitset bs1, bitset bs2, int nbits));
  22. void mergebitset Py_PROTO((bitset bs1, bitset bs2, int nbits));
  23.  
  24. #define BITSPERBYTE    (8*sizeof(BYTE))
  25. #define NBYTES(nbits)    (((nbits) + BITSPERBYTE - 1) / BITSPERBYTE)
  26.  
  27. #define BIT2BYTE(ibit)    ((ibit) / BITSPERBYTE)
  28. #define BIT2SHIFT(ibit)    ((ibit) % BITSPERBYTE)
  29. #define BIT2MASK(ibit)    (1 << BIT2SHIFT(ibit))
  30. #define BYTE2BIT(ibyte)    ((ibyte) * BITSPERBYTE)
  31.  
  32. #ifdef __cplusplus
  33. }
  34. #endif
  35. #endif /* !Py_BITSET_H */
  36.